import { defineStore } from 'pinia'
import Notifier from 'src/helpers/Notifier'
import {api} from "boot/axios";

export const modalitiesStore = defineStore('modalities', {
  state: () => ({
    modalitiesList: [],
    editableModality: null,
    isEditing: false,
    creatableModality: null,
    isCreating: false
  }),

  getters: {
  },

  actions: {
    async getModalitiesList() {
      try {
        const response = await api.get('/doctors/modalities') ?? []
        this.modalitiesList = response.data

        return this.modalitiesList
      } catch (err) {
        Notifier.error('Ошибка при загрузке списка специализаций')
        console.error(err)
        return err
      }
    },
    async createModality(payload) {
      try {
        const response = await api.post('/doctors/modalities', payload)
        this.modalitiesList.push(response.data)
        Notifier.error('Специализация успешно создана')

        return response.data
      } catch (err) {
        Notifier.error('Ошибка при создании специализации')
        console.error(err)
        return err
      } finally {
        this.isCreating = false
      }
    },
    async editModality(payload) {
      try {
        const response = await api.put(`/doctors/modalities/${payload.code}`, { name: payload.name })
        await this.getModalitiesList()
        Notifier.success('Специализация успешно обновлена')

        return response.data
      } catch (err) {
        Notifier.error('Ошибка при обновлении специализации')
        console.error(err)
        return err
      } finally {
        this.isEditing = false
      }
    },
    async deleteModality(payload) {
      try {
        const response = await api.delete(`/doctors/modalities/${payload}`)
        await this.getModalitiesList()
        Notifier.success('Специализация успешно удалена')

        return response.data
      } catch (err) {
        Notifier.error('Ошибка при удалении специализации')
        console.error(err)
        return err
      }
    },
  }
})
